package org.soaism.parser.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.xtext.parsetree.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.eclipse.xtext.conversion.ValueConverterException;
import org.soaism.services.SOADslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

public class InternalSOADslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'application'", "';'", "'{'", "'description'", "'version'", "'}'", "'.'", "'import'", "'entityAspects'", "'entity'", "'*'", "'pathAlias'", "'remotingAspects'", "'XX'", "'restService'", "'baseUrl'", "'basePath'", "'GET'", "'POST'", "'DELETE'", "'PUT'", "'response'", "':'", "'parameterMessage'", "'bodyMessage'", "'wrapped'", "'Void'", "'String'", "'Integer'", "'Decimal'", "'Boolean'", "'Timestamp'"
    };
    public static final int RULE_ML_COMMENT=7;
    public static final int RULE_ID=5;
    public static final int RULE_WS=9;
    public static final int EOF=-1;
    public static final int RULE_INT=6;
    public static final int RULE_STRING=4;
    public static final int RULE_ANY_OTHER=10;
    public static final int RULE_SL_COMMENT=8;

        public InternalSOADslParser(TokenStream input) {
            super(input);
        }
        

    public String[] getTokenNames() { return tokenNames; }
    public String getGrammarFileName() { return "../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g"; }


     
     	private SOADslGrammarAccess grammarAccess;
     	
        public InternalSOADslParser(TokenStream input, IAstFactory factory, SOADslGrammarAccess grammarAccess) {
            this(input);
            this.factory = factory;
            registerRules(grammarAccess.getGrammar());
            this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected InputStream getTokenFile() {
        	ClassLoader classLoader = getClass().getClassLoader();
        	return classLoader.getResourceAsStream("org/soaism/parser/antlr/internal/InternalSOADsl.tokens");
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Model";	
       	} 



    // $ANTLR start entryRuleModel
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:73:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
    public final EObject entryRuleModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModel = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:73:47: (iv_ruleModel= ruleModel EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:74:2: iv_ruleModel= ruleModel EOF
            {
             currentNode = createCompositeNode(grammarAccess.getModelRule(), currentNode); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel73);
            iv_ruleModel=ruleModel();
            _fsp--;

             current =iv_ruleModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel83); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleModel


    // $ANTLR start ruleModel
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:81:1: ruleModel returns [EObject current=null] : ( (lv_importInfo_0= ruleImportInfo ) (lv_applicationInfo_1= ruleApplicationInfo ) (lv_modelaspects_2= ruleModelAspect )* ) ;
    public final EObject ruleModel() throws RecognitionException {
        EObject current = null;

        EObject lv_importInfo_0 = null;

        EObject lv_applicationInfo_1 = null;

        EObject lv_modelaspects_2 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:86:6: ( ( (lv_importInfo_0= ruleImportInfo ) (lv_applicationInfo_1= ruleApplicationInfo ) (lv_modelaspects_2= ruleModelAspect )* ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:87:1: ( (lv_importInfo_0= ruleImportInfo ) (lv_applicationInfo_1= ruleApplicationInfo ) (lv_modelaspects_2= ruleModelAspect )* )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:87:1: ( (lv_importInfo_0= ruleImportInfo ) (lv_applicationInfo_1= ruleApplicationInfo ) (lv_modelaspects_2= ruleModelAspect )* )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:87:2: (lv_importInfo_0= ruleImportInfo ) (lv_applicationInfo_1= ruleApplicationInfo ) (lv_modelaspects_2= ruleModelAspect )*
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:87:2: (lv_importInfo_0= ruleImportInfo )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:90:6: lv_importInfo_0= ruleImportInfo
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getModelAccess().getImportInfoImportInfoParserRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleImportInfo_in_ruleModel142);
            lv_importInfo_0=ruleImportInfo();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getModelRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        
            	        try {
            	       		set(current, "importInfo", lv_importInfo_0, "ImportInfo", currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:108:2: (lv_applicationInfo_1= ruleApplicationInfo )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:111:6: lv_applicationInfo_1= ruleApplicationInfo
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getModelAccess().getApplicationInfoApplicationInfoParserRuleCall_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleApplicationInfo_in_ruleModel180);
            lv_applicationInfo_1=ruleApplicationInfo();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getModelRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        
            	        try {
            	       		set(current, "applicationInfo", lv_applicationInfo_1, "ApplicationInfo", currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:129:2: (lv_modelaspects_2= ruleModelAspect )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==19||LA1_0==23) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:132:6: lv_modelaspects_2= ruleModelAspect
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getModelAccess().getModelaspectsModelAspectParserRuleCall_2_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleModelAspect_in_ruleModel218);
            	    lv_modelaspects_2=ruleModelAspect();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getModelRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "modelaspects", lv_modelaspects_2, "ModelAspect", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleModel


    // $ANTLR start entryRuleApplicationInfo
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:157:1: entryRuleApplicationInfo returns [EObject current=null] : iv_ruleApplicationInfo= ruleApplicationInfo EOF ;
    public final EObject entryRuleApplicationInfo() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleApplicationInfo = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:157:57: (iv_ruleApplicationInfo= ruleApplicationInfo EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:158:2: iv_ruleApplicationInfo= ruleApplicationInfo EOF
            {
             currentNode = createCompositeNode(grammarAccess.getApplicationInfoRule(), currentNode); 
            pushFollow(FOLLOW_ruleApplicationInfo_in_entryRuleApplicationInfo256);
            iv_ruleApplicationInfo=ruleApplicationInfo();
            _fsp--;

             current =iv_ruleApplicationInfo; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleApplicationInfo266); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleApplicationInfo


    // $ANTLR start ruleApplicationInfo
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:165:1: ruleApplicationInfo returns [EObject current=null] : ( 'application' ( ( ( rulequalID ) ';' ) | ( (lv_name_3= rulequalID ) '{' 'description' (lv_description_6= RULE_STRING ) ';' 'version' (lv_version_9= RULE_STRING ) ';' '}' ) ) ) ;
    public final EObject ruleApplicationInfo() throws RecognitionException {
        EObject current = null;

        Token lv_description_6=null;
        Token lv_version_9=null;
        AntlrDatatypeRuleToken lv_name_3 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:170:6: ( ( 'application' ( ( ( rulequalID ) ';' ) | ( (lv_name_3= rulequalID ) '{' 'description' (lv_description_6= RULE_STRING ) ';' 'version' (lv_version_9= RULE_STRING ) ';' '}' ) ) ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:171:1: ( 'application' ( ( ( rulequalID ) ';' ) | ( (lv_name_3= rulequalID ) '{' 'description' (lv_description_6= RULE_STRING ) ';' 'version' (lv_version_9= RULE_STRING ) ';' '}' ) ) )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:171:1: ( 'application' ( ( ( rulequalID ) ';' ) | ( (lv_name_3= rulequalID ) '{' 'description' (lv_description_6= RULE_STRING ) ';' 'version' (lv_version_9= RULE_STRING ) ';' '}' ) ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:171:2: 'application' ( ( ( rulequalID ) ';' ) | ( (lv_name_3= rulequalID ) '{' 'description' (lv_description_6= RULE_STRING ) ';' 'version' (lv_version_9= RULE_STRING ) ';' '}' ) )
            {
            match(input,11,FOLLOW_11_in_ruleApplicationInfo300); 

                    createLeafNode(grammarAccess.getApplicationInfoAccess().getApplicationKeyword_0(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:175:1: ( ( ( rulequalID ) ';' ) | ( (lv_name_3= rulequalID ) '{' 'description' (lv_description_6= RULE_STRING ) ';' 'version' (lv_version_9= RULE_STRING ) ';' '}' ) )
            int alt2=2;
            alt2 = dfa2.predict(input);
            switch (alt2) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:175:2: ( ( rulequalID ) ';' )
                    {
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:175:2: ( ( rulequalID ) ';' )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:175:3: ( rulequalID ) ';'
                    {
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:175:3: ( rulequalID )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:178:3: rulequalID
                    {

                    			if (current==null) {
                    	            current = factory.create(grammarAccess.getApplicationInfoRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                            
                     
                    	        currentNode=createCompositeNode(grammarAccess.getApplicationInfoAccess().getRefApplicationInfoCrossReference_1_0_0_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_rulequalID_in_ruleApplicationInfo329);
                    rulequalID();
                    _fsp--;

                     
                    	        currentNode = currentNode.getParent();
                    	    

                    }

                    match(input,12,FOLLOW_12_in_ruleApplicationInfo341); 

                            createLeafNode(grammarAccess.getApplicationInfoAccess().getSemicolonKeyword_1_0_1(), null); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:198:6: ( (lv_name_3= rulequalID ) '{' 'description' (lv_description_6= RULE_STRING ) ';' 'version' (lv_version_9= RULE_STRING ) ';' '}' )
                    {
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:198:6: ( (lv_name_3= rulequalID ) '{' 'description' (lv_description_6= RULE_STRING ) ';' 'version' (lv_version_9= RULE_STRING ) ';' '}' )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:198:7: (lv_name_3= rulequalID ) '{' 'description' (lv_description_6= RULE_STRING ) ';' 'version' (lv_version_9= RULE_STRING ) ';' '}'
                    {
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:198:7: (lv_name_3= rulequalID )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:201:6: lv_name_3= rulequalID
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getApplicationInfoAccess().getNameQualIDParserRuleCall_1_1_0_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_rulequalID_in_ruleApplicationInfo383);
                    lv_name_3=rulequalID();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getApplicationInfoRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "name", lv_name_3, "qualID", currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }

                    match(input,13,FOLLOW_13_in_ruleApplicationInfo396); 

                            createLeafNode(grammarAccess.getApplicationInfoAccess().getLeftCurlyBracketKeyword_1_1_1(), null); 
                        
                    match(input,14,FOLLOW_14_in_ruleApplicationInfo405); 

                            createLeafNode(grammarAccess.getApplicationInfoAccess().getDescriptionKeyword_1_1_2(), null); 
                        
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:227:1: (lv_description_6= RULE_STRING )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:229:6: lv_description_6= RULE_STRING
                    {
                    lv_description_6=(Token)input.LT(1);
                    match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleApplicationInfo427); 

                    		createLeafNode(grammarAccess.getApplicationInfoAccess().getDescriptionSTRINGTerminalRuleCall_1_1_3_0(), "description"); 
                    	

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getApplicationInfoRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "description", lv_description_6, "STRING", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }

                    match(input,12,FOLLOW_12_in_ruleApplicationInfo444); 

                            createLeafNode(grammarAccess.getApplicationInfoAccess().getSemicolonKeyword_1_1_4(), null); 
                        
                    match(input,15,FOLLOW_15_in_ruleApplicationInfo453); 

                            createLeafNode(grammarAccess.getApplicationInfoAccess().getVersionKeyword_1_1_5(), null); 
                        
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:255:1: (lv_version_9= RULE_STRING )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:257:6: lv_version_9= RULE_STRING
                    {
                    lv_version_9=(Token)input.LT(1);
                    match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleApplicationInfo475); 

                    		createLeafNode(grammarAccess.getApplicationInfoAccess().getVersionSTRINGTerminalRuleCall_1_1_6_0(), "version"); 
                    	

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getApplicationInfoRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "version", lv_version_9, "STRING", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }

                    match(input,12,FOLLOW_12_in_ruleApplicationInfo492); 

                            createLeafNode(grammarAccess.getApplicationInfoAccess().getSemicolonKeyword_1_1_7(), null); 
                        
                    match(input,16,FOLLOW_16_in_ruleApplicationInfo501); 

                            createLeafNode(grammarAccess.getApplicationInfoAccess().getRightCurlyBracketKeyword_1_1_8(), null); 
                        

                    }


                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleApplicationInfo


    // $ANTLR start entryRulequalID
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:290:1: entryRulequalID returns [String current=null] : iv_rulequalID= rulequalID EOF ;
    public final String entryRulequalID() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_rulequalID = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:290:47: (iv_rulequalID= rulequalID EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:291:2: iv_rulequalID= rulequalID EOF
            {
             currentNode = createCompositeNode(grammarAccess.getQualIDRule(), currentNode); 
            pushFollow(FOLLOW_rulequalID_in_entryRulequalID537);
            iv_rulequalID=rulequalID();
            _fsp--;

             current =iv_rulequalID.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRulequalID548); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulequalID


    // $ANTLR start rulequalID
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:298:1: rulequalID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken rulequalID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:304:6: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:305:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:305:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:305:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rulequalID588); 

            		current.merge(this_ID_0);
                
             
                createLeafNode(grammarAccess.getQualIDAccess().getIDTerminalRuleCall_0(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:312:1: (kw= '.' this_ID_2= RULE_ID )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==17) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:313:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)input.LT(1);
            	    match(input,17,FOLLOW_17_in_rulequalID607); 

            	            current.merge(kw);
            	            createLeafNode(grammarAccess.getQualIDAccess().getFullStopKeyword_1_0(), null); 
            	        
            	    this_ID_2=(Token)input.LT(1);
            	    match(input,RULE_ID,FOLLOW_RULE_ID_in_rulequalID622); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        createLeafNode(grammarAccess.getQualIDAccess().getIDTerminalRuleCall_1_1(), null); 
            	        

            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);


            }


            }

             resetLookahead(); 
            	    lastConsumedNode = currentNode;
            	    lastConsumedDatatypeToken = current;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulequalID


    // $ANTLR start entryRuleModelAspect
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:333:1: entryRuleModelAspect returns [EObject current=null] : iv_ruleModelAspect= ruleModelAspect EOF ;
    public final EObject entryRuleModelAspect() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModelAspect = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:333:53: (iv_ruleModelAspect= ruleModelAspect EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:334:2: iv_ruleModelAspect= ruleModelAspect EOF
            {
             currentNode = createCompositeNode(grammarAccess.getModelAspectRule(), currentNode); 
            pushFollow(FOLLOW_ruleModelAspect_in_entryRuleModelAspect667);
            iv_ruleModelAspect=ruleModelAspect();
            _fsp--;

             current =iv_ruleModelAspect; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModelAspect677); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleModelAspect


    // $ANTLR start ruleModelAspect
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:341:1: ruleModelAspect returns [EObject current=null] : (this_EntityAspect_0= ruleEntityAspect | this_RemotingAspect_1= ruleRemotingAspect ) ;
    public final EObject ruleModelAspect() throws RecognitionException {
        EObject current = null;

        EObject this_EntityAspect_0 = null;

        EObject this_RemotingAspect_1 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:346:6: ( (this_EntityAspect_0= ruleEntityAspect | this_RemotingAspect_1= ruleRemotingAspect ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:347:1: (this_EntityAspect_0= ruleEntityAspect | this_RemotingAspect_1= ruleRemotingAspect )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:347:1: (this_EntityAspect_0= ruleEntityAspect | this_RemotingAspect_1= ruleRemotingAspect )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==19) ) {
                alt4=1;
            }
            else if ( (LA4_0==23) ) {
                alt4=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("347:1: (this_EntityAspect_0= ruleEntityAspect | this_RemotingAspect_1= ruleRemotingAspect )", 4, 0, input);

                throw nvae;
            }
            switch (alt4) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:348:5: this_EntityAspect_0= ruleEntityAspect
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getModelAspectAccess().getEntityAspectParserRuleCall_0(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleEntityAspect_in_ruleModelAspect724);
                    this_EntityAspect_0=ruleEntityAspect();
                    _fsp--;

                     
                            current = this_EntityAspect_0; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 2 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:358:5: this_RemotingAspect_1= ruleRemotingAspect
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getModelAspectAccess().getRemotingAspectParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleRemotingAspect_in_ruleModelAspect751);
                    this_RemotingAspect_1=ruleRemotingAspect();
                    _fsp--;

                     
                            current = this_RemotingAspect_1; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleModelAspect


    // $ANTLR start entryRuleImportInfo
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:373:1: entryRuleImportInfo returns [EObject current=null] : iv_ruleImportInfo= ruleImportInfo EOF ;
    public final EObject entryRuleImportInfo() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImportInfo = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:373:52: (iv_ruleImportInfo= ruleImportInfo EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:374:2: iv_ruleImportInfo= ruleImportInfo EOF
            {
             currentNode = createCompositeNode(grammarAccess.getImportInfoRule(), currentNode); 
            pushFollow(FOLLOW_ruleImportInfo_in_entryRuleImportInfo783);
            iv_ruleImportInfo=ruleImportInfo();
            _fsp--;

             current =iv_ruleImportInfo; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleImportInfo793); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleImportInfo


    // $ANTLR start ruleImportInfo
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:381:1: ruleImportInfo returns [EObject current=null] : (lv_imports_0= ruleImport )* ;
    public final EObject ruleImportInfo() throws RecognitionException {
        EObject current = null;

        EObject lv_imports_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:386:6: ( (lv_imports_0= ruleImport )* )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:387:1: (lv_imports_0= ruleImport )*
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:387:1: (lv_imports_0= ruleImport )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( (LA5_0==18) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:390:6: lv_imports_0= ruleImport
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getImportInfoAccess().getImportsImportParserRuleCall_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleImport_in_ruleImportInfo851);
            	    lv_imports_0=ruleImport();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getImportInfoRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "imports", lv_imports_0, "Import", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleImportInfo


    // $ANTLR start entryRuleImport
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:415:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
    public final EObject entryRuleImport() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImport = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:415:48: (iv_ruleImport= ruleImport EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:416:2: iv_ruleImport= ruleImport EOF
            {
             currentNode = createCompositeNode(grammarAccess.getImportRule(), currentNode); 
            pushFollow(FOLLOW_ruleImport_in_entryRuleImport888);
            iv_ruleImport=ruleImport();
            _fsp--;

             current =iv_ruleImport; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleImport898); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleImport


    // $ANTLR start ruleImport
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:423:1: ruleImport returns [EObject current=null] : ( 'import' (lv_importURI_1= RULE_STRING ) ';' ) ;
    public final EObject ruleImport() throws RecognitionException {
        EObject current = null;

        Token lv_importURI_1=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:428:6: ( ( 'import' (lv_importURI_1= RULE_STRING ) ';' ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:429:1: ( 'import' (lv_importURI_1= RULE_STRING ) ';' )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:429:1: ( 'import' (lv_importURI_1= RULE_STRING ) ';' )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:429:2: 'import' (lv_importURI_1= RULE_STRING ) ';'
            {
            match(input,18,FOLLOW_18_in_ruleImport932); 

                    createLeafNode(grammarAccess.getImportAccess().getImportKeyword_0(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:433:1: (lv_importURI_1= RULE_STRING )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:435:6: lv_importURI_1= RULE_STRING
            {
            lv_importURI_1=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleImport954); 

            		createLeafNode(grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0(), "importURI"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getImportRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "importURI", lv_importURI_1, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            match(input,12,FOLLOW_12_in_ruleImport971); 

                    createLeafNode(grammarAccess.getImportAccess().getSemicolonKeyword_2(), null); 
                

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleImport


    // $ANTLR start entryRuleEntityAspect
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:464:1: entryRuleEntityAspect returns [EObject current=null] : iv_ruleEntityAspect= ruleEntityAspect EOF ;
    public final EObject entryRuleEntityAspect() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEntityAspect = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:464:54: (iv_ruleEntityAspect= ruleEntityAspect EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:465:2: iv_ruleEntityAspect= ruleEntityAspect EOF
            {
             currentNode = createCompositeNode(grammarAccess.getEntityAspectRule(), currentNode); 
            pushFollow(FOLLOW_ruleEntityAspect_in_entryRuleEntityAspect1004);
            iv_ruleEntityAspect=ruleEntityAspect();
            _fsp--;

             current =iv_ruleEntityAspect; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEntityAspect1014); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleEntityAspect


    // $ANTLR start ruleEntityAspect
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:472:1: ruleEntityAspect returns [EObject current=null] : ( 'entityAspects' '{' (lv_entities_2= ruleEntity )* '}' ) ;
    public final EObject ruleEntityAspect() throws RecognitionException {
        EObject current = null;

        EObject lv_entities_2 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:477:6: ( ( 'entityAspects' '{' (lv_entities_2= ruleEntity )* '}' ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:478:1: ( 'entityAspects' '{' (lv_entities_2= ruleEntity )* '}' )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:478:1: ( 'entityAspects' '{' (lv_entities_2= ruleEntity )* '}' )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:478:2: 'entityAspects' '{' (lv_entities_2= ruleEntity )* '}'
            {
            match(input,19,FOLLOW_19_in_ruleEntityAspect1048); 

                    createLeafNode(grammarAccess.getEntityAspectAccess().getEntityAspectsKeyword_0(), null); 
                
            match(input,13,FOLLOW_13_in_ruleEntityAspect1057); 

                    createLeafNode(grammarAccess.getEntityAspectAccess().getLeftCurlyBracketKeyword_1(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:486:1: (lv_entities_2= ruleEntity )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==20) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:489:6: lv_entities_2= ruleEntity
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getEntityAspectAccess().getEntitiesEntityParserRuleCall_2_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleEntity_in_ruleEntityAspect1091);
            	    lv_entities_2=ruleEntity();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getEntityAspectRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "entities", lv_entities_2, "Entity", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);

            match(input,16,FOLLOW_16_in_ruleEntityAspect1105); 

                    createLeafNode(grammarAccess.getEntityAspectAccess().getRightCurlyBracketKeyword_3(), null); 
                

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleEntityAspect


    // $ANTLR start entryRuleEntity
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:518:1: entryRuleEntity returns [EObject current=null] : iv_ruleEntity= ruleEntity EOF ;
    public final EObject entryRuleEntity() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEntity = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:518:48: (iv_ruleEntity= ruleEntity EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:519:2: iv_ruleEntity= ruleEntity EOF
            {
             currentNode = createCompositeNode(grammarAccess.getEntityRule(), currentNode); 
            pushFollow(FOLLOW_ruleEntity_in_entryRuleEntity1138);
            iv_ruleEntity=ruleEntity();
            _fsp--;

             current =iv_ruleEntity; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEntity1148); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleEntity


    // $ANTLR start ruleEntity
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:526:1: ruleEntity returns [EObject current=null] : ( 'entity' (lv_name_1= RULE_ID ) '{' (lv_features_3= ruleFeature )* '}' ) ;
    public final EObject ruleEntity() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        EObject lv_features_3 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:531:6: ( ( 'entity' (lv_name_1= RULE_ID ) '{' (lv_features_3= ruleFeature )* '}' ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:532:1: ( 'entity' (lv_name_1= RULE_ID ) '{' (lv_features_3= ruleFeature )* '}' )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:532:1: ( 'entity' (lv_name_1= RULE_ID ) '{' (lv_features_3= ruleFeature )* '}' )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:532:2: 'entity' (lv_name_1= RULE_ID ) '{' (lv_features_3= ruleFeature )* '}'
            {
            match(input,20,FOLLOW_20_in_ruleEntity1182); 

                    createLeafNode(grammarAccess.getEntityAccess().getEntityKeyword_0(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:536:1: (lv_name_1= RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:538:6: lv_name_1= RULE_ID
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEntity1204); 

            		createLeafNode(grammarAccess.getEntityAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getEntityRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "ID", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            match(input,13,FOLLOW_13_in_ruleEntity1221); 

                    createLeafNode(grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_2(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:560:1: (lv_features_3= ruleFeature )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==RULE_ID||(LA7_0>=37 && LA7_0<=42)) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:563:6: lv_features_3= ruleFeature
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getEntityAccess().getFeaturesFeatureParserRuleCall_3_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleFeature_in_ruleEntity1255);
            	    lv_features_3=ruleFeature();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getEntityRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "features", lv_features_3, "Feature", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

            match(input,16,FOLLOW_16_in_ruleEntity1269); 

                    createLeafNode(grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_4(), null); 
                

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleEntity


    // $ANTLR start entryRuleFeature
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:592:1: entryRuleFeature returns [EObject current=null] : iv_ruleFeature= ruleFeature EOF ;
    public final EObject entryRuleFeature() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFeature = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:592:49: (iv_ruleFeature= ruleFeature EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:593:2: iv_ruleFeature= ruleFeature EOF
            {
             currentNode = createCompositeNode(grammarAccess.getFeatureRule(), currentNode); 
            pushFollow(FOLLOW_ruleFeature_in_entryRuleFeature1302);
            iv_ruleFeature=ruleFeature();
            _fsp--;

             current =iv_ruleFeature; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFeature1312); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleFeature


    // $ANTLR start ruleFeature
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:600:1: ruleFeature returns [EObject current=null] : ( ( (lv_datatype_0= ruleDatatype ) | ( ( RULE_ID ) (lv_isMulti_2= '*' )? ) ) (lv_name_3= RULE_ID ) ( 'pathAlias' (lv_alias_5= RULE_STRING ) )? ) ;
    public final EObject ruleFeature() throws RecognitionException {
        EObject current = null;

        Token lv_isMulti_2=null;
        Token lv_name_3=null;
        Token lv_alias_5=null;
        EObject lv_datatype_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:605:6: ( ( ( (lv_datatype_0= ruleDatatype ) | ( ( RULE_ID ) (lv_isMulti_2= '*' )? ) ) (lv_name_3= RULE_ID ) ( 'pathAlias' (lv_alias_5= RULE_STRING ) )? ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:606:1: ( ( (lv_datatype_0= ruleDatatype ) | ( ( RULE_ID ) (lv_isMulti_2= '*' )? ) ) (lv_name_3= RULE_ID ) ( 'pathAlias' (lv_alias_5= RULE_STRING ) )? )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:606:1: ( ( (lv_datatype_0= ruleDatatype ) | ( ( RULE_ID ) (lv_isMulti_2= '*' )? ) ) (lv_name_3= RULE_ID ) ( 'pathAlias' (lv_alias_5= RULE_STRING ) )? )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:606:2: ( (lv_datatype_0= ruleDatatype ) | ( ( RULE_ID ) (lv_isMulti_2= '*' )? ) ) (lv_name_3= RULE_ID ) ( 'pathAlias' (lv_alias_5= RULE_STRING ) )?
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:606:2: ( (lv_datatype_0= ruleDatatype ) | ( ( RULE_ID ) (lv_isMulti_2= '*' )? ) )
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( ((LA9_0>=37 && LA9_0<=42)) ) {
                alt9=1;
            }
            else if ( (LA9_0==RULE_ID) ) {
                alt9=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("606:2: ( (lv_datatype_0= ruleDatatype ) | ( ( RULE_ID ) (lv_isMulti_2= '*' )? ) )", 9, 0, input);

                throw nvae;
            }
            switch (alt9) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:606:3: (lv_datatype_0= ruleDatatype )
                    {
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:606:3: (lv_datatype_0= ruleDatatype )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:609:6: lv_datatype_0= ruleDatatype
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getFeatureAccess().getDatatypeDatatypeParserRuleCall_0_0_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleDatatype_in_ruleFeature1372);
                    lv_datatype_0=ruleDatatype();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getFeatureRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "datatype", lv_datatype_0, "Datatype", currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }
                    break;
                case 2 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:628:6: ( ( RULE_ID ) (lv_isMulti_2= '*' )? )
                    {
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:628:6: ( ( RULE_ID ) (lv_isMulti_2= '*' )? )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:628:7: ( RULE_ID ) (lv_isMulti_2= '*' )?
                    {
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:628:7: ( RULE_ID )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:631:3: RULE_ID
                    {

                    			if (current==null) {
                    	            current = factory.create(grammarAccess.getFeatureRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                            
                    match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFeature1405); 

                    		createLeafNode(grammarAccess.getFeatureAccess().getTypeEntityCrossReference_0_1_0_0(), "type"); 
                    	

                    }

                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:644:2: (lv_isMulti_2= '*' )?
                    int alt8=2;
                    int LA8_0 = input.LA(1);

                    if ( (LA8_0==21) ) {
                        alt8=1;
                    }
                    switch (alt8) {
                        case 1 :
                            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:646:6: lv_isMulti_2= '*'
                            {
                            lv_isMulti_2=(Token)input.LT(1);
                            match(input,21,FOLLOW_21_in_ruleFeature1429); 

                                    createLeafNode(grammarAccess.getFeatureAccess().getIsMultiAsteriskKeyword_0_1_1_0(), "isMulti"); 
                                

                            	        if (current==null) {
                            	            current = factory.create(grammarAccess.getFeatureRule().getType().getClassifier());
                            	            associateNodeWithAstElement(currentNode, current);
                            	        }
                            	        
                            	        try {
                            	       		set(current, "isMulti", true, "*", lastConsumedNode);
                            	        } catch (ValueConverterException vce) {
                            				handleValueConverterException(vce);
                            	        }
                            	    

                            }
                            break;

                    }


                    }


                    }
                    break;

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:665:5: (lv_name_3= RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:667:6: lv_name_3= RULE_ID
            {
            lv_name_3=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFeature1467); 

            		createLeafNode(grammarAccess.getFeatureAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getFeatureRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_3, "ID", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:685:2: ( 'pathAlias' (lv_alias_5= RULE_STRING ) )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==22) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:685:3: 'pathAlias' (lv_alias_5= RULE_STRING )
                    {
                    match(input,22,FOLLOW_22_in_ruleFeature1485); 

                            createLeafNode(grammarAccess.getFeatureAccess().getPathAliasKeyword_2_0(), null); 
                        
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:689:1: (lv_alias_5= RULE_STRING )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:691:6: lv_alias_5= RULE_STRING
                    {
                    lv_alias_5=(Token)input.LT(1);
                    match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleFeature1507); 

                    		createLeafNode(grammarAccess.getFeatureAccess().getAliasSTRINGTerminalRuleCall_2_1_0(), "alias"); 
                    	

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getFeatureRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "alias", lv_alias_5, "STRING", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }


                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleFeature


    // $ANTLR start entryRuleDatatype
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:718:1: entryRuleDatatype returns [EObject current=null] : iv_ruleDatatype= ruleDatatype EOF ;
    public final EObject entryRuleDatatype() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDatatype = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:718:50: (iv_ruleDatatype= ruleDatatype EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:719:2: iv_ruleDatatype= ruleDatatype EOF
            {
             currentNode = createCompositeNode(grammarAccess.getDatatypeRule(), currentNode); 
            pushFollow(FOLLOW_ruleDatatype_in_entryRuleDatatype1552);
            iv_ruleDatatype=ruleDatatype();
            _fsp--;

             current =iv_ruleDatatype; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDatatype1562); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleDatatype


    // $ANTLR start ruleDatatype
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:726:1: ruleDatatype returns [EObject current=null] : (lv_kind_0= ruleTypeKind ) ;
    public final EObject ruleDatatype() throws RecognitionException {
        EObject current = null;

        Enumerator lv_kind_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:731:6: ( (lv_kind_0= ruleTypeKind ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:732:1: (lv_kind_0= ruleTypeKind )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:732:1: (lv_kind_0= ruleTypeKind )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:735:6: lv_kind_0= ruleTypeKind
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getDatatypeAccess().getKindTypeKindEnumRuleCall_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleTypeKind_in_ruleDatatype1620);
            lv_kind_0=ruleTypeKind();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getDatatypeRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        
            	        try {
            	       		set(current, "kind", lv_kind_0, "TypeKind", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleDatatype


    // $ANTLR start entryRuleRemotingAspect
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:760:1: entryRuleRemotingAspect returns [EObject current=null] : iv_ruleRemotingAspect= ruleRemotingAspect EOF ;
    public final EObject entryRuleRemotingAspect() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRemotingAspect = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:760:56: (iv_ruleRemotingAspect= ruleRemotingAspect EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:761:2: iv_ruleRemotingAspect= ruleRemotingAspect EOF
            {
             currentNode = createCompositeNode(grammarAccess.getRemotingAspectRule(), currentNode); 
            pushFollow(FOLLOW_ruleRemotingAspect_in_entryRuleRemotingAspect1656);
            iv_ruleRemotingAspect=ruleRemotingAspect();
            _fsp--;

             current =iv_ruleRemotingAspect; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRemotingAspect1666); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleRemotingAspect


    // $ANTLR start ruleRemotingAspect
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:768:1: ruleRemotingAspect returns [EObject current=null] : ( 'remotingAspects' '{' (lv_messages_2= ruleMessage )* (lv_remoteServices_3= ruleRemoteService )* '}' ) ;
    public final EObject ruleRemotingAspect() throws RecognitionException {
        EObject current = null;

        EObject lv_messages_2 = null;

        EObject lv_remoteServices_3 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:773:6: ( ( 'remotingAspects' '{' (lv_messages_2= ruleMessage )* (lv_remoteServices_3= ruleRemoteService )* '}' ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:774:1: ( 'remotingAspects' '{' (lv_messages_2= ruleMessage )* (lv_remoteServices_3= ruleRemoteService )* '}' )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:774:1: ( 'remotingAspects' '{' (lv_messages_2= ruleMessage )* (lv_remoteServices_3= ruleRemoteService )* '}' )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:774:2: 'remotingAspects' '{' (lv_messages_2= ruleMessage )* (lv_remoteServices_3= ruleRemoteService )* '}'
            {
            match(input,23,FOLLOW_23_in_ruleRemotingAspect1700); 

                    createLeafNode(grammarAccess.getRemotingAspectAccess().getRemotingAspectsKeyword_0(), null); 
                
            match(input,13,FOLLOW_13_in_ruleRemotingAspect1709); 

                    createLeafNode(grammarAccess.getRemotingAspectAccess().getLeftCurlyBracketKeyword_1(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:782:1: (lv_messages_2= ruleMessage )*
            loop11:
            do {
                int alt11=2;
                int LA11_0 = input.LA(1);

                if ( ((LA11_0>=34 && LA11_0<=35)) ) {
                    alt11=1;
                }


                switch (alt11) {
            	case 1 :
            	    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:785:6: lv_messages_2= ruleMessage
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getRemotingAspectAccess().getMessagesMessageParserRuleCall_2_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleMessage_in_ruleRemotingAspect1743);
            	    lv_messages_2=ruleMessage();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getRemotingAspectRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "messages", lv_messages_2, "Message", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop11;
                }
            } while (true);

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:803:3: (lv_remoteServices_3= ruleRemoteService )*
            loop12:
            do {
                int alt12=2;
                int LA12_0 = input.LA(1);

                if ( ((LA12_0>=24 && LA12_0<=25)) ) {
                    alt12=1;
                }


                switch (alt12) {
            	case 1 :
            	    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:806:6: lv_remoteServices_3= ruleRemoteService
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getRemotingAspectAccess().getRemoteServicesRemoteServiceParserRuleCall_3_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleRemoteService_in_ruleRemotingAspect1782);
            	    lv_remoteServices_3=ruleRemoteService();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getRemotingAspectRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "remoteServices", lv_remoteServices_3, "RemoteService", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop12;
                }
            } while (true);

            match(input,16,FOLLOW_16_in_ruleRemotingAspect1796); 

                    createLeafNode(grammarAccess.getRemotingAspectAccess().getRightCurlyBracketKeyword_4(), null); 
                

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleRemotingAspect


    // $ANTLR start entryRuleRemoteService
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:835:1: entryRuleRemoteService returns [EObject current=null] : iv_ruleRemoteService= ruleRemoteService EOF ;
    public final EObject entryRuleRemoteService() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRemoteService = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:835:55: (iv_ruleRemoteService= ruleRemoteService EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:836:2: iv_ruleRemoteService= ruleRemoteService EOF
            {
             currentNode = createCompositeNode(grammarAccess.getRemoteServiceRule(), currentNode); 
            pushFollow(FOLLOW_ruleRemoteService_in_entryRuleRemoteService1829);
            iv_ruleRemoteService=ruleRemoteService();
            _fsp--;

             current =iv_ruleRemoteService; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRemoteService1839); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleRemoteService


    // $ANTLR start ruleRemoteService
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:843:1: ruleRemoteService returns [EObject current=null] : (this_RestService_0= ruleRestService | ruleOtherService ) ;
    public final EObject ruleRemoteService() throws RecognitionException {
        EObject current = null;

        EObject this_RestService_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:848:6: ( (this_RestService_0= ruleRestService | ruleOtherService ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:849:1: (this_RestService_0= ruleRestService | ruleOtherService )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:849:1: (this_RestService_0= ruleRestService | ruleOtherService )
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==25) ) {
                alt13=1;
            }
            else if ( (LA13_0==24) ) {
                alt13=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("849:1: (this_RestService_0= ruleRestService | ruleOtherService )", 13, 0, input);

                throw nvae;
            }
            switch (alt13) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:850:5: this_RestService_0= ruleRestService
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getRemoteServiceAccess().getRestServiceParserRuleCall_0(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleRestService_in_ruleRemoteService1886);
                    this_RestService_0=ruleRestService();
                    _fsp--;

                     
                            current = this_RestService_0; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 2 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:859:6: ruleOtherService
                    {
                    pushFollow(FOLLOW_ruleOtherService_in_ruleRemoteService1900);
                    ruleOtherService();
                    _fsp--;


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleRemoteService


    // $ANTLR start entryRuleOtherService
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:866:1: entryRuleOtherService returns [String current=null] : iv_ruleOtherService= ruleOtherService EOF ;
    public final String entryRuleOtherService() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOtherService = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:866:53: (iv_ruleOtherService= ruleOtherService EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:867:2: iv_ruleOtherService= ruleOtherService EOF
            {
             currentNode = createCompositeNode(grammarAccess.getOtherServiceRule(), currentNode); 
            pushFollow(FOLLOW_ruleOtherService_in_entryRuleOtherService1926);
            iv_ruleOtherService=ruleOtherService();
            _fsp--;

             current =iv_ruleOtherService.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleOtherService1937); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleOtherService


    // $ANTLR start ruleOtherService
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:874:1: ruleOtherService returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'XX' ;
    public final AntlrDatatypeRuleToken ruleOtherService() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:880:6: (kw= 'XX' )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:882:2: kw= 'XX'
            {
            kw=(Token)input.LT(1);
            match(input,24,FOLLOW_24_in_ruleOtherService1974); 

                    current.merge(kw);
                    createLeafNode(grammarAccess.getOtherServiceAccess().getXXKeyword(), null); 
                

            }

             resetLookahead(); 
            	    lastConsumedNode = currentNode;
            	    lastConsumedDatatypeToken = current;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleOtherService


    // $ANTLR start entryRuleRestService
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:895:1: entryRuleRestService returns [EObject current=null] : iv_ruleRestService= ruleRestService EOF ;
    public final EObject entryRuleRestService() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRestService = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:895:53: (iv_ruleRestService= ruleRestService EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:896:2: iv_ruleRestService= ruleRestService EOF
            {
             currentNode = createCompositeNode(grammarAccess.getRestServiceRule(), currentNode); 
            pushFollow(FOLLOW_ruleRestService_in_entryRuleRestService2011);
            iv_ruleRestService=ruleRestService();
            _fsp--;

             current =iv_ruleRestService; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRestService2021); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleRestService


    // $ANTLR start ruleRestService
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:903:1: ruleRestService returns [EObject current=null] : ( 'restService' (lv_name_1= RULE_ID ) (lv_serviceName_2= RULE_STRING )? '{' 'baseUrl' (lv_baseUrl_5= RULE_STRING ) ( 'basePath' (lv_basePath_7= RULE_STRING ) )? (lv_request_8= ruleRestServiceRequest )* '}' ) ;
    public final EObject ruleRestService() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        Token lv_serviceName_2=null;
        Token lv_baseUrl_5=null;
        Token lv_basePath_7=null;
        EObject lv_request_8 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:908:6: ( ( 'restService' (lv_name_1= RULE_ID ) (lv_serviceName_2= RULE_STRING )? '{' 'baseUrl' (lv_baseUrl_5= RULE_STRING ) ( 'basePath' (lv_basePath_7= RULE_STRING ) )? (lv_request_8= ruleRestServiceRequest )* '}' ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:909:1: ( 'restService' (lv_name_1= RULE_ID ) (lv_serviceName_2= RULE_STRING )? '{' 'baseUrl' (lv_baseUrl_5= RULE_STRING ) ( 'basePath' (lv_basePath_7= RULE_STRING ) )? (lv_request_8= ruleRestServiceRequest )* '}' )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:909:1: ( 'restService' (lv_name_1= RULE_ID ) (lv_serviceName_2= RULE_STRING )? '{' 'baseUrl' (lv_baseUrl_5= RULE_STRING ) ( 'basePath' (lv_basePath_7= RULE_STRING ) )? (lv_request_8= ruleRestServiceRequest )* '}' )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:909:2: 'restService' (lv_name_1= RULE_ID ) (lv_serviceName_2= RULE_STRING )? '{' 'baseUrl' (lv_baseUrl_5= RULE_STRING ) ( 'basePath' (lv_basePath_7= RULE_STRING ) )? (lv_request_8= ruleRestServiceRequest )* '}'
            {
            match(input,25,FOLLOW_25_in_ruleRestService2055); 

                    createLeafNode(grammarAccess.getRestServiceAccess().getRestServiceKeyword_0(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:913:1: (lv_name_1= RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:915:6: lv_name_1= RULE_ID
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRestService2077); 

            		createLeafNode(grammarAccess.getRestServiceAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getRestServiceRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "ID", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:933:2: (lv_serviceName_2= RULE_STRING )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==RULE_STRING) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:935:6: lv_serviceName_2= RULE_STRING
                    {
                    lv_serviceName_2=(Token)input.LT(1);
                    match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRestService2107); 

                    		createLeafNode(grammarAccess.getRestServiceAccess().getServiceNameSTRINGTerminalRuleCall_2_0(), "serviceName"); 
                    	

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getRestServiceRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "serviceName", lv_serviceName_2, "STRING", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }
                    break;

            }

            match(input,13,FOLLOW_13_in_ruleRestService2125); 

                    createLeafNode(grammarAccess.getRestServiceAccess().getLeftCurlyBracketKeyword_3(), null); 
                
            match(input,26,FOLLOW_26_in_ruleRestService2134); 

                    createLeafNode(grammarAccess.getRestServiceAccess().getBaseUrlKeyword_4(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:961:1: (lv_baseUrl_5= RULE_STRING )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:963:6: lv_baseUrl_5= RULE_STRING
            {
            lv_baseUrl_5=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRestService2156); 

            		createLeafNode(grammarAccess.getRestServiceAccess().getBaseUrlSTRINGTerminalRuleCall_5_0(), "baseUrl"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getRestServiceRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "baseUrl", lv_baseUrl_5, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:981:2: ( 'basePath' (lv_basePath_7= RULE_STRING ) )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==27) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:981:3: 'basePath' (lv_basePath_7= RULE_STRING )
                    {
                    match(input,27,FOLLOW_27_in_ruleRestService2174); 

                            createLeafNode(grammarAccess.getRestServiceAccess().getBasePathKeyword_6_0(), null); 
                        
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:985:1: (lv_basePath_7= RULE_STRING )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:987:6: lv_basePath_7= RULE_STRING
                    {
                    lv_basePath_7=(Token)input.LT(1);
                    match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRestService2196); 

                    		createLeafNode(grammarAccess.getRestServiceAccess().getBasePathSTRINGTerminalRuleCall_6_1_0(), "basePath"); 
                    	

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getRestServiceRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "basePath", lv_basePath_7, "STRING", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }


                    }
                    break;

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1005:4: (lv_request_8= ruleRestServiceRequest )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( ((LA16_0>=28 && LA16_0<=31)) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1008:6: lv_request_8= ruleRestServiceRequest
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getRestServiceAccess().getRequestRestServiceRequestParserRuleCall_7_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleRestServiceRequest_in_ruleRestService2240);
            	    lv_request_8=ruleRestServiceRequest();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getRestServiceRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "request", lv_request_8, "RestServiceRequest", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);

            match(input,16,FOLLOW_16_in_ruleRestService2254); 

                    createLeafNode(grammarAccess.getRestServiceAccess().getRightCurlyBracketKeyword_8(), null); 
                

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleRestService


    // $ANTLR start entryRuleRestServiceRequest
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1037:1: entryRuleRestServiceRequest returns [EObject current=null] : iv_ruleRestServiceRequest= ruleRestServiceRequest EOF ;
    public final EObject entryRuleRestServiceRequest() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRestServiceRequest = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1037:60: (iv_ruleRestServiceRequest= ruleRestServiceRequest EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1038:2: iv_ruleRestServiceRequest= ruleRestServiceRequest EOF
            {
             currentNode = createCompositeNode(grammarAccess.getRestServiceRequestRule(), currentNode); 
            pushFollow(FOLLOW_ruleRestServiceRequest_in_entryRuleRestServiceRequest2287);
            iv_ruleRestServiceRequest=ruleRestServiceRequest();
            _fsp--;

             current =iv_ruleRestServiceRequest; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRestServiceRequest2297); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleRestServiceRequest


    // $ANTLR start ruleRestServiceRequest
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1045:1: ruleRestServiceRequest returns [EObject current=null] : (this_GetRequest_0= ruleGetRequest | this_PostRequest_1= rulePostRequest | this_DeleteRequest_2= ruleDeleteRequest | this_PutRequest_3= rulePutRequest ) ;
    public final EObject ruleRestServiceRequest() throws RecognitionException {
        EObject current = null;

        EObject this_GetRequest_0 = null;

        EObject this_PostRequest_1 = null;

        EObject this_DeleteRequest_2 = null;

        EObject this_PutRequest_3 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1050:6: ( (this_GetRequest_0= ruleGetRequest | this_PostRequest_1= rulePostRequest | this_DeleteRequest_2= ruleDeleteRequest | this_PutRequest_3= rulePutRequest ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1051:1: (this_GetRequest_0= ruleGetRequest | this_PostRequest_1= rulePostRequest | this_DeleteRequest_2= ruleDeleteRequest | this_PutRequest_3= rulePutRequest )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1051:1: (this_GetRequest_0= ruleGetRequest | this_PostRequest_1= rulePostRequest | this_DeleteRequest_2= ruleDeleteRequest | this_PutRequest_3= rulePutRequest )
            int alt17=4;
            switch ( input.LA(1) ) {
            case 28:
                {
                alt17=1;
                }
                break;
            case 29:
                {
                alt17=2;
                }
                break;
            case 30:
                {
                alt17=3;
                }
                break;
            case 31:
                {
                alt17=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("1051:1: (this_GetRequest_0= ruleGetRequest | this_PostRequest_1= rulePostRequest | this_DeleteRequest_2= ruleDeleteRequest | this_PutRequest_3= rulePutRequest )", 17, 0, input);

                throw nvae;
            }

            switch (alt17) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1052:5: this_GetRequest_0= ruleGetRequest
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getRestServiceRequestAccess().getGetRequestParserRuleCall_0(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleGetRequest_in_ruleRestServiceRequest2344);
                    this_GetRequest_0=ruleGetRequest();
                    _fsp--;

                     
                            current = this_GetRequest_0; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 2 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1062:5: this_PostRequest_1= rulePostRequest
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getRestServiceRequestAccess().getPostRequestParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_rulePostRequest_in_ruleRestServiceRequest2371);
                    this_PostRequest_1=rulePostRequest();
                    _fsp--;

                     
                            current = this_PostRequest_1; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 3 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1072:5: this_DeleteRequest_2= ruleDeleteRequest
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getRestServiceRequestAccess().getDeleteRequestParserRuleCall_2(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleDeleteRequest_in_ruleRestServiceRequest2398);
                    this_DeleteRequest_2=ruleDeleteRequest();
                    _fsp--;

                     
                            current = this_DeleteRequest_2; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 4 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1082:5: this_PutRequest_3= rulePutRequest
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getRestServiceRequestAccess().getPutRequestParserRuleCall_3(), currentNode); 
                        
                    pushFollow(FOLLOW_rulePutRequest_in_ruleRestServiceRequest2425);
                    this_PutRequest_3=rulePutRequest();
                    _fsp--;

                     
                            current = this_PutRequest_3; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleRestServiceRequest


    // $ANTLR start entryRuleGetRequest
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1097:1: entryRuleGetRequest returns [EObject current=null] : iv_ruleGetRequest= ruleGetRequest EOF ;
    public final EObject entryRuleGetRequest() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleGetRequest = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1097:52: (iv_ruleGetRequest= ruleGetRequest EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1098:2: iv_ruleGetRequest= ruleGetRequest EOF
            {
             currentNode = createCompositeNode(grammarAccess.getGetRequestRule(), currentNode); 
            pushFollow(FOLLOW_ruleGetRequest_in_entryRuleGetRequest2457);
            iv_ruleGetRequest=ruleGetRequest();
            _fsp--;

             current =iv_ruleGetRequest; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleGetRequest2467); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleGetRequest


    // $ANTLR start ruleGetRequest
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1105:1: ruleGetRequest returns [EObject current=null] : ( 'GET' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse ) ) ;
    public final EObject ruleGetRequest() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        Token lv_path_2=null;
        EObject lv_response_4 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1110:6: ( ( 'GET' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse ) ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1111:1: ( 'GET' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse ) )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1111:1: ( 'GET' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1111:2: 'GET' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse )
            {
            match(input,28,FOLLOW_28_in_ruleGetRequest2501); 

                    createLeafNode(grammarAccess.getGetRequestAccess().getGETKeyword_0(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1115:1: (lv_name_1= RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1117:6: lv_name_1= RULE_ID
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleGetRequest2523); 

            		createLeafNode(grammarAccess.getGetRequestAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getGetRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "ID", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1135:2: (lv_path_2= RULE_STRING )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1137:6: lv_path_2= RULE_STRING
            {
            lv_path_2=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleGetRequest2553); 

            		createLeafNode(grammarAccess.getGetRequestAccess().getPathSTRINGTerminalRuleCall_2_0(), "path"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getGetRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "path", lv_path_2, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1155:2: ( RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1158:3: RULE_ID
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getGetRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleGetRequest2583); 

            		createLeafNode(grammarAccess.getGetRequestAccess().getParameterMsgParameterMessageCrossReference_3_0(), "parameterMsg"); 
            	

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1171:2: (lv_response_4= ruleResponse )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1174:6: lv_response_4= ruleResponse
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getGetRequestAccess().getResponseResponseParserRuleCall_4_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleResponse_in_ruleGetRequest2620);
            lv_response_4=ruleResponse();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getGetRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        
            	        try {
            	       		set(current, "response", lv_response_4, "Response", currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleGetRequest


    // $ANTLR start entryRulePostRequest
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1199:1: entryRulePostRequest returns [EObject current=null] : iv_rulePostRequest= rulePostRequest EOF ;
    public final EObject entryRulePostRequest() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePostRequest = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1199:53: (iv_rulePostRequest= rulePostRequest EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1200:2: iv_rulePostRequest= rulePostRequest EOF
            {
             currentNode = createCompositeNode(grammarAccess.getPostRequestRule(), currentNode); 
            pushFollow(FOLLOW_rulePostRequest_in_entryRulePostRequest2657);
            iv_rulePostRequest=rulePostRequest();
            _fsp--;

             current =iv_rulePostRequest; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePostRequest2667); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePostRequest


    // $ANTLR start rulePostRequest
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1207:1: rulePostRequest returns [EObject current=null] : ( 'POST' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse )? ) ;
    public final EObject rulePostRequest() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        Token lv_path_2=null;
        EObject lv_response_4 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1212:6: ( ( 'POST' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse )? ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1213:1: ( 'POST' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse )? )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1213:1: ( 'POST' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse )? )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1213:2: 'POST' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse )?
            {
            match(input,29,FOLLOW_29_in_rulePostRequest2701); 

                    createLeafNode(grammarAccess.getPostRequestAccess().getPOSTKeyword_0(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1217:1: (lv_name_1= RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1219:6: lv_name_1= RULE_ID
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePostRequest2723); 

            		createLeafNode(grammarAccess.getPostRequestAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPostRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "ID", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1237:2: (lv_path_2= RULE_STRING )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1239:6: lv_path_2= RULE_STRING
            {
            lv_path_2=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePostRequest2753); 

            		createLeafNode(grammarAccess.getPostRequestAccess().getPathSTRINGTerminalRuleCall_2_0(), "path"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPostRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "path", lv_path_2, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1257:2: ( RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1260:3: RULE_ID
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getPostRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePostRequest2783); 

            		createLeafNode(grammarAccess.getPostRequestAccess().getBodyMsgBodyMessageCrossReference_3_0(), "bodyMsg"); 
            	

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1273:2: (lv_response_4= ruleResponse )?
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==32) ) {
                alt18=1;
            }
            switch (alt18) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1276:6: lv_response_4= ruleResponse
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getPostRequestAccess().getResponseResponseParserRuleCall_4_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleResponse_in_rulePostRequest2820);
                    lv_response_4=ruleResponse();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getPostRequestRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "response", lv_response_4, "Response", currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePostRequest


    // $ANTLR start entryRuleDeleteRequest
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1301:1: entryRuleDeleteRequest returns [EObject current=null] : iv_ruleDeleteRequest= ruleDeleteRequest EOF ;
    public final EObject entryRuleDeleteRequest() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDeleteRequest = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1301:55: (iv_ruleDeleteRequest= ruleDeleteRequest EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1302:2: iv_ruleDeleteRequest= ruleDeleteRequest EOF
            {
             currentNode = createCompositeNode(grammarAccess.getDeleteRequestRule(), currentNode); 
            pushFollow(FOLLOW_ruleDeleteRequest_in_entryRuleDeleteRequest2858);
            iv_ruleDeleteRequest=ruleDeleteRequest();
            _fsp--;

             current =iv_ruleDeleteRequest; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDeleteRequest2868); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleDeleteRequest


    // $ANTLR start ruleDeleteRequest
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1309:1: ruleDeleteRequest returns [EObject current=null] : ( 'DELETE' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse )? ) ;
    public final EObject ruleDeleteRequest() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        Token lv_path_2=null;
        EObject lv_response_4 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1314:6: ( ( 'DELETE' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse )? ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1315:1: ( 'DELETE' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse )? )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1315:1: ( 'DELETE' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse )? )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1315:2: 'DELETE' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) (lv_response_4= ruleResponse )?
            {
            match(input,30,FOLLOW_30_in_ruleDeleteRequest2902); 

                    createLeafNode(grammarAccess.getDeleteRequestAccess().getDELETEKeyword_0(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1319:1: (lv_name_1= RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1321:6: lv_name_1= RULE_ID
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDeleteRequest2924); 

            		createLeafNode(grammarAccess.getDeleteRequestAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getDeleteRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "ID", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1339:2: (lv_path_2= RULE_STRING )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1341:6: lv_path_2= RULE_STRING
            {
            lv_path_2=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleDeleteRequest2954); 

            		createLeafNode(grammarAccess.getDeleteRequestAccess().getPathSTRINGTerminalRuleCall_2_0(), "path"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getDeleteRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "path", lv_path_2, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1359:2: ( RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1362:3: RULE_ID
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getDeleteRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDeleteRequest2984); 

            		createLeafNode(grammarAccess.getDeleteRequestAccess().getParameterMsgParameterMessageCrossReference_3_0(), "parameterMsg"); 
            	

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1375:2: (lv_response_4= ruleResponse )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==32) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1378:6: lv_response_4= ruleResponse
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getDeleteRequestAccess().getResponseResponseParserRuleCall_4_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleResponse_in_ruleDeleteRequest3021);
                    lv_response_4=ruleResponse();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getDeleteRequestRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "response", lv_response_4, "Response", currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleDeleteRequest


    // $ANTLR start entryRulePutRequest
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1403:1: entryRulePutRequest returns [EObject current=null] : iv_rulePutRequest= rulePutRequest EOF ;
    public final EObject entryRulePutRequest() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePutRequest = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1403:52: (iv_rulePutRequest= rulePutRequest EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1404:2: iv_rulePutRequest= rulePutRequest EOF
            {
             currentNode = createCompositeNode(grammarAccess.getPutRequestRule(), currentNode); 
            pushFollow(FOLLOW_rulePutRequest_in_entryRulePutRequest3059);
            iv_rulePutRequest=rulePutRequest();
            _fsp--;

             current =iv_rulePutRequest; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePutRequest3069); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePutRequest


    // $ANTLR start rulePutRequest
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1411:1: rulePutRequest returns [EObject current=null] : ( 'PUT' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) ( RULE_ID ) (lv_response_5= ruleResponse )? ) ;
    public final EObject rulePutRequest() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        Token lv_path_2=null;
        EObject lv_response_5 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1416:6: ( ( 'PUT' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) ( RULE_ID ) (lv_response_5= ruleResponse )? ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1417:1: ( 'PUT' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) ( RULE_ID ) (lv_response_5= ruleResponse )? )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1417:1: ( 'PUT' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) ( RULE_ID ) (lv_response_5= ruleResponse )? )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1417:2: 'PUT' (lv_name_1= RULE_ID ) (lv_path_2= RULE_STRING ) ( RULE_ID ) ( RULE_ID ) (lv_response_5= ruleResponse )?
            {
            match(input,31,FOLLOW_31_in_rulePutRequest3103); 

                    createLeafNode(grammarAccess.getPutRequestAccess().getPUTKeyword_0(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1421:1: (lv_name_1= RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1423:6: lv_name_1= RULE_ID
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePutRequest3125); 

            		createLeafNode(grammarAccess.getPutRequestAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPutRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "ID", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1441:2: (lv_path_2= RULE_STRING )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1443:6: lv_path_2= RULE_STRING
            {
            lv_path_2=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePutRequest3155); 

            		createLeafNode(grammarAccess.getPutRequestAccess().getPathSTRINGTerminalRuleCall_2_0(), "path"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPutRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "path", lv_path_2, "STRING", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1461:2: ( RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1464:3: RULE_ID
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getPutRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePutRequest3185); 

            		createLeafNode(grammarAccess.getPutRequestAccess().getBodyMsgBodyMessageCrossReference_3_0(), "bodyMsg"); 
            	

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1477:2: ( RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1480:3: RULE_ID
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getPutRequestRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePutRequest3210); 

            		createLeafNode(grammarAccess.getPutRequestAccess().getParameterMsgParameterMessageCrossReference_4_0(), "parameterMsg"); 
            	

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1493:2: (lv_response_5= ruleResponse )?
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==32) ) {
                alt20=1;
            }
            switch (alt20) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1496:6: lv_response_5= ruleResponse
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getPutRequestAccess().getResponseResponseParserRuleCall_5_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleResponse_in_rulePutRequest3247);
                    lv_response_5=ruleResponse();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getPutRequestRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "response", lv_response_5, "Response", currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePutRequest


    // $ANTLR start entryRuleResponse
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1521:1: entryRuleResponse returns [EObject current=null] : iv_ruleResponse= ruleResponse EOF ;
    public final EObject entryRuleResponse() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleResponse = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1521:50: (iv_ruleResponse= ruleResponse EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1522:2: iv_ruleResponse= ruleResponse EOF
            {
             currentNode = createCompositeNode(grammarAccess.getResponseRule(), currentNode); 
            pushFollow(FOLLOW_ruleResponse_in_entryRuleResponse3285);
            iv_ruleResponse=ruleResponse();
            _fsp--;

             current =iv_ruleResponse; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleResponse3295); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleResponse


    // $ANTLR start ruleResponse
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1529:1: ruleResponse returns [EObject current=null] : ( 'response' ':' ( RULE_ID ) ) ;
    public final EObject ruleResponse() throws RecognitionException {
        EObject current = null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1534:6: ( ( 'response' ':' ( RULE_ID ) ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1535:1: ( 'response' ':' ( RULE_ID ) )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1535:1: ( 'response' ':' ( RULE_ID ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1535:2: 'response' ':' ( RULE_ID )
            {
            match(input,32,FOLLOW_32_in_ruleResponse3329); 

                    createLeafNode(grammarAccess.getResponseAccess().getResponseKeyword_0(), null); 
                
            match(input,33,FOLLOW_33_in_ruleResponse3338); 

                    createLeafNode(grammarAccess.getResponseAccess().getColonKeyword_1(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1543:1: ( RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1546:3: RULE_ID
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getResponseRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleResponse3360); 

            		createLeafNode(grammarAccess.getResponseAccess().getResponseTypeBodyMessageCrossReference_2_0(), "responseType"); 
            	

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleResponse


    // $ANTLR start entryRuleMessage
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1566:1: entryRuleMessage returns [EObject current=null] : iv_ruleMessage= ruleMessage EOF ;
    public final EObject entryRuleMessage() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMessage = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1566:49: (iv_ruleMessage= ruleMessage EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1567:2: iv_ruleMessage= ruleMessage EOF
            {
             currentNode = createCompositeNode(grammarAccess.getMessageRule(), currentNode); 
            pushFollow(FOLLOW_ruleMessage_in_entryRuleMessage3396);
            iv_ruleMessage=ruleMessage();
            _fsp--;

             current =iv_ruleMessage; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMessage3406); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleMessage


    // $ANTLR start ruleMessage
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1574:1: ruleMessage returns [EObject current=null] : (this_ParameterMessage_0= ruleParameterMessage | this_BodyMessage_1= ruleBodyMessage ) ;
    public final EObject ruleMessage() throws RecognitionException {
        EObject current = null;

        EObject this_ParameterMessage_0 = null;

        EObject this_BodyMessage_1 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1579:6: ( (this_ParameterMessage_0= ruleParameterMessage | this_BodyMessage_1= ruleBodyMessage ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1580:1: (this_ParameterMessage_0= ruleParameterMessage | this_BodyMessage_1= ruleBodyMessage )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1580:1: (this_ParameterMessage_0= ruleParameterMessage | this_BodyMessage_1= ruleBodyMessage )
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==34) ) {
                alt21=1;
            }
            else if ( (LA21_0==35) ) {
                alt21=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("1580:1: (this_ParameterMessage_0= ruleParameterMessage | this_BodyMessage_1= ruleBodyMessage )", 21, 0, input);

                throw nvae;
            }
            switch (alt21) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1581:5: this_ParameterMessage_0= ruleParameterMessage
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getMessageAccess().getParameterMessageParserRuleCall_0(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleParameterMessage_in_ruleMessage3453);
                    this_ParameterMessage_0=ruleParameterMessage();
                    _fsp--;

                     
                            current = this_ParameterMessage_0; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 2 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1591:5: this_BodyMessage_1= ruleBodyMessage
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getMessageAccess().getBodyMessageParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleBodyMessage_in_ruleMessage3480);
                    this_BodyMessage_1=ruleBodyMessage();
                    _fsp--;

                     
                            current = this_BodyMessage_1; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleMessage


    // $ANTLR start entryRuleParameterMessage
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1608:1: entryRuleParameterMessage returns [EObject current=null] : iv_ruleParameterMessage= ruleParameterMessage EOF ;
    public final EObject entryRuleParameterMessage() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleParameterMessage = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1608:58: (iv_ruleParameterMessage= ruleParameterMessage EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1609:2: iv_ruleParameterMessage= ruleParameterMessage EOF
            {
             currentNode = createCompositeNode(grammarAccess.getParameterMessageRule(), currentNode); 
            pushFollow(FOLLOW_ruleParameterMessage_in_entryRuleParameterMessage3514);
            iv_ruleParameterMessage=ruleParameterMessage();
            _fsp--;

             current =iv_ruleParameterMessage; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleParameterMessage3524); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleParameterMessage


    // $ANTLR start ruleParameterMessage
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1616:1: ruleParameterMessage returns [EObject current=null] : ( 'parameterMessage' (lv_name_1= RULE_ID ) '{' (lv_features_3= ruleSimpleFeature )* '}' ) ;
    public final EObject ruleParameterMessage() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        EObject lv_features_3 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1621:6: ( ( 'parameterMessage' (lv_name_1= RULE_ID ) '{' (lv_features_3= ruleSimpleFeature )* '}' ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1622:1: ( 'parameterMessage' (lv_name_1= RULE_ID ) '{' (lv_features_3= ruleSimpleFeature )* '}' )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1622:1: ( 'parameterMessage' (lv_name_1= RULE_ID ) '{' (lv_features_3= ruleSimpleFeature )* '}' )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1622:2: 'parameterMessage' (lv_name_1= RULE_ID ) '{' (lv_features_3= ruleSimpleFeature )* '}'
            {
            match(input,34,FOLLOW_34_in_ruleParameterMessage3558); 

                    createLeafNode(grammarAccess.getParameterMessageAccess().getParameterMessageKeyword_0(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1626:1: (lv_name_1= RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1628:6: lv_name_1= RULE_ID
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleParameterMessage3580); 

            		createLeafNode(grammarAccess.getParameterMessageAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getParameterMessageRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "ID", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            match(input,13,FOLLOW_13_in_ruleParameterMessage3597); 

                    createLeafNode(grammarAccess.getParameterMessageAccess().getLeftCurlyBracketKeyword_2(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1650:1: (lv_features_3= ruleSimpleFeature )*
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( ((LA22_0>=37 && LA22_0<=42)) ) {
                    alt22=1;
                }


                switch (alt22) {
            	case 1 :
            	    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1653:6: lv_features_3= ruleSimpleFeature
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getParameterMessageAccess().getFeaturesSimpleFeatureParserRuleCall_3_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleSimpleFeature_in_ruleParameterMessage3631);
            	    lv_features_3=ruleSimpleFeature();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getParameterMessageRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "features", lv_features_3, "SimpleFeature", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop22;
                }
            } while (true);

            match(input,16,FOLLOW_16_in_ruleParameterMessage3645); 

                    createLeafNode(grammarAccess.getParameterMessageAccess().getRightCurlyBracketKeyword_4(), null); 
                

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleParameterMessage


    // $ANTLR start entryRuleSimpleFeature
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1682:1: entryRuleSimpleFeature returns [EObject current=null] : iv_ruleSimpleFeature= ruleSimpleFeature EOF ;
    public final EObject entryRuleSimpleFeature() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSimpleFeature = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1682:55: (iv_ruleSimpleFeature= ruleSimpleFeature EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1683:2: iv_ruleSimpleFeature= ruleSimpleFeature EOF
            {
             currentNode = createCompositeNode(grammarAccess.getSimpleFeatureRule(), currentNode); 
            pushFollow(FOLLOW_ruleSimpleFeature_in_entryRuleSimpleFeature3678);
            iv_ruleSimpleFeature=ruleSimpleFeature();
            _fsp--;

             current =iv_ruleSimpleFeature; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSimpleFeature3688); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleSimpleFeature


    // $ANTLR start ruleSimpleFeature
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1690:1: ruleSimpleFeature returns [EObject current=null] : ( (lv_datatype_0= ruleDatatype ) (lv_name_1= RULE_ID ) ( 'pathAlias' (lv_alias_3= RULE_STRING ) )? ) ;
    public final EObject ruleSimpleFeature() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        Token lv_alias_3=null;
        EObject lv_datatype_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1695:6: ( ( (lv_datatype_0= ruleDatatype ) (lv_name_1= RULE_ID ) ( 'pathAlias' (lv_alias_3= RULE_STRING ) )? ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1696:1: ( (lv_datatype_0= ruleDatatype ) (lv_name_1= RULE_ID ) ( 'pathAlias' (lv_alias_3= RULE_STRING ) )? )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1696:1: ( (lv_datatype_0= ruleDatatype ) (lv_name_1= RULE_ID ) ( 'pathAlias' (lv_alias_3= RULE_STRING ) )? )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1696:2: (lv_datatype_0= ruleDatatype ) (lv_name_1= RULE_ID ) ( 'pathAlias' (lv_alias_3= RULE_STRING ) )?
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1696:2: (lv_datatype_0= ruleDatatype )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1699:6: lv_datatype_0= ruleDatatype
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getSimpleFeatureAccess().getDatatypeDatatypeParserRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleDatatype_in_ruleSimpleFeature3747);
            lv_datatype_0=ruleDatatype();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getSimpleFeatureRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        
            	        try {
            	       		set(current, "datatype", lv_datatype_0, "Datatype", currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1717:2: (lv_name_1= RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1719:6: lv_name_1= RULE_ID
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSimpleFeature3773); 

            		createLeafNode(grammarAccess.getSimpleFeatureAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getSimpleFeatureRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "ID", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1737:2: ( 'pathAlias' (lv_alias_3= RULE_STRING ) )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==22) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1737:3: 'pathAlias' (lv_alias_3= RULE_STRING )
                    {
                    match(input,22,FOLLOW_22_in_ruleSimpleFeature3791); 

                            createLeafNode(grammarAccess.getSimpleFeatureAccess().getPathAliasKeyword_2_0(), null); 
                        
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1741:1: (lv_alias_3= RULE_STRING )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1743:6: lv_alias_3= RULE_STRING
                    {
                    lv_alias_3=(Token)input.LT(1);
                    match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleSimpleFeature3813); 

                    		createLeafNode(grammarAccess.getSimpleFeatureAccess().getAliasSTRINGTerminalRuleCall_2_1_0(), "alias"); 
                    	

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getSimpleFeatureRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "alias", lv_alias_3, "STRING", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }


                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleSimpleFeature


    // $ANTLR start entryRuleBodyMessage
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1768:1: entryRuleBodyMessage returns [EObject current=null] : iv_ruleBodyMessage= ruleBodyMessage EOF ;
    public final EObject entryRuleBodyMessage() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBodyMessage = null;


        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1768:53: (iv_ruleBodyMessage= ruleBodyMessage EOF )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1769:2: iv_ruleBodyMessage= ruleBodyMessage EOF
            {
             currentNode = createCompositeNode(grammarAccess.getBodyMessageRule(), currentNode); 
            pushFollow(FOLLOW_ruleBodyMessage_in_entryRuleBodyMessage3856);
            iv_ruleBodyMessage=ruleBodyMessage();
            _fsp--;

             current =iv_ruleBodyMessage; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBodyMessage3866); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleBodyMessage


    // $ANTLR start ruleBodyMessage
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1776:1: ruleBodyMessage returns [EObject current=null] : ( 'bodyMessage' (lv_name_1= RULE_ID ) (lv_isMessageWrapped_2= 'wrapped' )? '{' (lv_features_4= ruleFeature )* '}' ) ;
    public final EObject ruleBodyMessage() throws RecognitionException {
        EObject current = null;

        Token lv_name_1=null;
        Token lv_isMessageWrapped_2=null;
        EObject lv_features_4 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1781:6: ( ( 'bodyMessage' (lv_name_1= RULE_ID ) (lv_isMessageWrapped_2= 'wrapped' )? '{' (lv_features_4= ruleFeature )* '}' ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1782:1: ( 'bodyMessage' (lv_name_1= RULE_ID ) (lv_isMessageWrapped_2= 'wrapped' )? '{' (lv_features_4= ruleFeature )* '}' )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1782:1: ( 'bodyMessage' (lv_name_1= RULE_ID ) (lv_isMessageWrapped_2= 'wrapped' )? '{' (lv_features_4= ruleFeature )* '}' )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1782:2: 'bodyMessage' (lv_name_1= RULE_ID ) (lv_isMessageWrapped_2= 'wrapped' )? '{' (lv_features_4= ruleFeature )* '}'
            {
            match(input,35,FOLLOW_35_in_ruleBodyMessage3900); 

                    createLeafNode(grammarAccess.getBodyMessageAccess().getBodyMessageKeyword_0(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1786:1: (lv_name_1= RULE_ID )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1788:6: lv_name_1= RULE_ID
            {
            lv_name_1=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleBodyMessage3922); 

            		createLeafNode(grammarAccess.getBodyMessageAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            	

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getBodyMessageRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_1, "ID", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }

            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1806:2: (lv_isMessageWrapped_2= 'wrapped' )?
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==36) ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1808:6: lv_isMessageWrapped_2= 'wrapped'
                    {
                    lv_isMessageWrapped_2=(Token)input.LT(1);
                    match(input,36,FOLLOW_36_in_ruleBodyMessage3951); 

                            createLeafNode(grammarAccess.getBodyMessageAccess().getIsMessageWrappedWrappedKeyword_2_0(), "isMessageWrapped"); 
                        

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getBodyMessageRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "isMessageWrapped", true, "wrapped", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }
                    break;

            }

            match(input,13,FOLLOW_13_in_ruleBodyMessage3974); 

                    createLeafNode(grammarAccess.getBodyMessageAccess().getLeftCurlyBracketKeyword_3(), null); 
                
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1831:1: (lv_features_4= ruleFeature )*
            loop25:
            do {
                int alt25=2;
                int LA25_0 = input.LA(1);

                if ( (LA25_0==RULE_ID||(LA25_0>=37 && LA25_0<=42)) ) {
                    alt25=1;
                }


                switch (alt25) {
            	case 1 :
            	    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1834:6: lv_features_4= ruleFeature
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getBodyMessageAccess().getFeaturesFeatureParserRuleCall_4_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleFeature_in_ruleBodyMessage4008);
            	    lv_features_4=ruleFeature();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getBodyMessageRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        
            	    	        try {
            	    	       		add(current, "features", lv_features_4, "Feature", currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }
            	    break;

            	default :
            	    break loop25;
                }
            } while (true);

            match(input,16,FOLLOW_16_in_ruleBodyMessage4022); 

                    createLeafNode(grammarAccess.getBodyMessageAccess().getRightCurlyBracketKeyword_5(), null); 
                

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleBodyMessage


    // $ANTLR start ruleTypeKind
    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1865:1: ruleTypeKind returns [Enumerator current=null] : ( ( 'Void' ) | ( 'String' ) | ( 'Integer' ) | ( 'Decimal' ) | ( 'Boolean' ) | ( 'Timestamp' ) ) ;
    public final Enumerator ruleTypeKind() throws RecognitionException {
        Enumerator current = null;

         setCurrentLookahead(); resetLookahead(); 
        try {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1869:6: ( ( ( 'Void' ) | ( 'String' ) | ( 'Integer' ) | ( 'Decimal' ) | ( 'Boolean' ) | ( 'Timestamp' ) ) )
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1870:1: ( ( 'Void' ) | ( 'String' ) | ( 'Integer' ) | ( 'Decimal' ) | ( 'Boolean' ) | ( 'Timestamp' ) )
            {
            // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1870:1: ( ( 'Void' ) | ( 'String' ) | ( 'Integer' ) | ( 'Decimal' ) | ( 'Boolean' ) | ( 'Timestamp' ) )
            int alt26=6;
            switch ( input.LA(1) ) {
            case 37:
                {
                alt26=1;
                }
                break;
            case 38:
                {
                alt26=2;
                }
                break;
            case 39:
                {
                alt26=3;
                }
                break;
            case 40:
                {
                alt26=4;
                }
                break;
            case 41:
                {
                alt26=5;
                }
                break;
            case 42:
                {
                alt26=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("1870:1: ( ( 'Void' ) | ( 'String' ) | ( 'Integer' ) | ( 'Decimal' ) | ( 'Boolean' ) | ( 'Timestamp' ) )", 26, 0, input);

                throw nvae;
            }

            switch (alt26) {
                case 1 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1870:2: ( 'Void' )
                    {
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1870:2: ( 'Void' )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1870:4: 'Void'
                    {
                    match(input,37,FOLLOW_37_in_ruleTypeKind4071); 

                            current = grammarAccess.getTypeKindAccess().getVOIDEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getTypeKindAccess().getVOIDEnumLiteralDeclaration_0(), null); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1876:6: ( 'String' )
                    {
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1876:6: ( 'String' )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1876:8: 'String'
                    {
                    match(input,38,FOLLOW_38_in_ruleTypeKind4086); 

                            current = grammarAccess.getTypeKindAccess().getTEXTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getTypeKindAccess().getTEXTEnumLiteralDeclaration_1(), null); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1882:6: ( 'Integer' )
                    {
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1882:6: ( 'Integer' )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1882:8: 'Integer'
                    {
                    match(input,39,FOLLOW_39_in_ruleTypeKind4101); 

                            current = grammarAccess.getTypeKindAccess().getINTEGEREnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getTypeKindAccess().getINTEGEREnumLiteralDeclaration_2(), null); 
                        

                    }


                    }
                    break;
                case 4 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1888:6: ( 'Decimal' )
                    {
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1888:6: ( 'Decimal' )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1888:8: 'Decimal'
                    {
                    match(input,40,FOLLOW_40_in_ruleTypeKind4116); 

                            current = grammarAccess.getTypeKindAccess().getDECIMALEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getTypeKindAccess().getDECIMALEnumLiteralDeclaration_3(), null); 
                        

                    }


                    }
                    break;
                case 5 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1894:6: ( 'Boolean' )
                    {
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1894:6: ( 'Boolean' )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1894:8: 'Boolean'
                    {
                    match(input,41,FOLLOW_41_in_ruleTypeKind4131); 

                            current = grammarAccess.getTypeKindAccess().getBOOLEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getTypeKindAccess().getBOOLEnumLiteralDeclaration_4(), null); 
                        

                    }


                    }
                    break;
                case 6 :
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1900:6: ( 'Timestamp' )
                    {
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1900:6: ( 'Timestamp' )
                    // ../soaism/src-gen/org/soaism/parser/antlr/internal/InternalSOADsl.g:1900:8: 'Timestamp'
                    {
                    match(input,42,FOLLOW_42_in_ruleTypeKind4146); 

                            current = grammarAccess.getTypeKindAccess().getTIMESTAMPEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getTypeKindAccess().getTIMESTAMPEnumLiteralDeclaration_5(), null); 
                        

                    }


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleTypeKind


    protected DFA2 dfa2 = new DFA2(this);
    static final String DFA2_eotS =
        "\6\uffff";
    static final String DFA2_eofS =
        "\6\uffff";
    static final String DFA2_minS =
        "\1\5\1\14\1\5\2\uffff\1\14";
    static final String DFA2_maxS =
        "\1\5\1\21\1\5\2\uffff\1\21";
    static final String DFA2_acceptS =
        "\3\uffff\1\1\1\2\1\uffff";
    static final String DFA2_specialS =
        "\6\uffff}>";
    static final String[] DFA2_transitionS = {
            "\1\1",
            "\1\3\1\4\3\uffff\1\2",
            "\1\5",
            "",
            "",
            "\1\3\1\4\3\uffff\1\2"
    };

    static final short[] DFA2_eot = DFA.unpackEncodedString(DFA2_eotS);
    static final short[] DFA2_eof = DFA.unpackEncodedString(DFA2_eofS);
    static final char[] DFA2_min = DFA.unpackEncodedStringToUnsignedChars(DFA2_minS);
    static final char[] DFA2_max = DFA.unpackEncodedStringToUnsignedChars(DFA2_maxS);
    static final short[] DFA2_accept = DFA.unpackEncodedString(DFA2_acceptS);
    static final short[] DFA2_special = DFA.unpackEncodedString(DFA2_specialS);
    static final short[][] DFA2_transition;

    static {
        int numStates = DFA2_transitionS.length;
        DFA2_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA2_transition[i] = DFA.unpackEncodedString(DFA2_transitionS[i]);
        }
    }

    class DFA2 extends DFA {

        public DFA2(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 2;
            this.eot = DFA2_eot;
            this.eof = DFA2_eof;
            this.min = DFA2_min;
            this.max = DFA2_max;
            this.accept = DFA2_accept;
            this.special = DFA2_special;
            this.transition = DFA2_transition;
        }
        public String getDescription() {
            return "175:1: ( ( ( rulequalID ) ';' ) | ( (lv_name_3= rulequalID ) '{' 'description' (lv_description_6= RULE_STRING ) ';' 'version' (lv_version_9= RULE_STRING ) ';' '}' ) )";
        }
    }
 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel73 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel83 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImportInfo_in_ruleModel142 = new BitSet(new long[]{0x0000000000000800L});
    public static final BitSet FOLLOW_ruleApplicationInfo_in_ruleModel180 = new BitSet(new long[]{0x0000000000880002L});
    public static final BitSet FOLLOW_ruleModelAspect_in_ruleModel218 = new BitSet(new long[]{0x0000000000880002L});
    public static final BitSet FOLLOW_ruleApplicationInfo_in_entryRuleApplicationInfo256 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleApplicationInfo266 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleApplicationInfo300 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_rulequalID_in_ruleApplicationInfo329 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleApplicationInfo341 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulequalID_in_ruleApplicationInfo383 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleApplicationInfo396 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleApplicationInfo405 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleApplicationInfo427 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleApplicationInfo444 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleApplicationInfo453 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleApplicationInfo475 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleApplicationInfo492 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleApplicationInfo501 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulequalID_in_entryRulequalID537 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulequalID548 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rulequalID588 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_17_in_rulequalID607 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rulequalID622 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_ruleModelAspect_in_entryRuleModelAspect667 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModelAspect677 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntityAspect_in_ruleModelAspect724 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRemotingAspect_in_ruleModelAspect751 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImportInfo_in_entryRuleImportInfo783 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImportInfo793 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_ruleImportInfo851 = new BitSet(new long[]{0x0000000000040002L});
    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport888 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImport898 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_ruleImport932 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleImport954 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleImport971 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntityAspect_in_entryRuleEntityAspect1004 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEntityAspect1014 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleEntityAspect1048 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleEntityAspect1057 = new BitSet(new long[]{0x0000000000110000L});
    public static final BitSet FOLLOW_ruleEntity_in_ruleEntityAspect1091 = new BitSet(new long[]{0x0000000000110000L});
    public static final BitSet FOLLOW_16_in_ruleEntityAspect1105 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_entryRuleEntity1138 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEntity1148 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleEntity1182 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEntity1204 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleEntity1221 = new BitSet(new long[]{0x000007E000010020L});
    public static final BitSet FOLLOW_ruleFeature_in_ruleEntity1255 = new BitSet(new long[]{0x000007E000010020L});
    public static final BitSet FOLLOW_16_in_ruleEntity1269 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFeature_in_entryRuleFeature1302 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFeature1312 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDatatype_in_ruleFeature1372 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFeature1405 = new BitSet(new long[]{0x0000000000200020L});
    public static final BitSet FOLLOW_21_in_ruleFeature1429 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFeature1467 = new BitSet(new long[]{0x0000000000400002L});
    public static final BitSet FOLLOW_22_in_ruleFeature1485 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleFeature1507 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDatatype_in_entryRuleDatatype1552 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDatatype1562 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeKind_in_ruleDatatype1620 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRemotingAspect_in_entryRuleRemotingAspect1656 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRemotingAspect1666 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleRemotingAspect1700 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleRemotingAspect1709 = new BitSet(new long[]{0x0000000C03010000L});
    public static final BitSet FOLLOW_ruleMessage_in_ruleRemotingAspect1743 = new BitSet(new long[]{0x0000000C03010000L});
    public static final BitSet FOLLOW_ruleRemoteService_in_ruleRemotingAspect1782 = new BitSet(new long[]{0x0000000003010000L});
    public static final BitSet FOLLOW_16_in_ruleRemotingAspect1796 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRemoteService_in_entryRuleRemoteService1829 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRemoteService1839 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRestService_in_ruleRemoteService1886 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOtherService_in_ruleRemoteService1900 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOtherService_in_entryRuleOtherService1926 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOtherService1937 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleOtherService1974 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRestService_in_entryRuleRestService2011 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRestService2021 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_ruleRestService2055 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRestService2077 = new BitSet(new long[]{0x0000000000002010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRestService2107 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleRestService2125 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleRestService2134 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRestService2156 = new BitSet(new long[]{0x00000000F8010000L});
    public static final BitSet FOLLOW_27_in_ruleRestService2174 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRestService2196 = new BitSet(new long[]{0x00000000F0010000L});
    public static final BitSet FOLLOW_ruleRestServiceRequest_in_ruleRestService2240 = new BitSet(new long[]{0x00000000F0010000L});
    public static final BitSet FOLLOW_16_in_ruleRestService2254 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRestServiceRequest_in_entryRuleRestServiceRequest2287 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRestServiceRequest2297 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGetRequest_in_ruleRestServiceRequest2344 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePostRequest_in_ruleRestServiceRequest2371 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDeleteRequest_in_ruleRestServiceRequest2398 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePutRequest_in_ruleRestServiceRequest2425 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGetRequest_in_entryRuleGetRequest2457 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGetRequest2467 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleGetRequest2501 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleGetRequest2523 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleGetRequest2553 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleGetRequest2583 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_ruleResponse_in_ruleGetRequest2620 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePostRequest_in_entryRulePostRequest2657 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePostRequest2667 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_rulePostRequest2701 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePostRequest2723 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePostRequest2753 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePostRequest2783 = new BitSet(new long[]{0x0000000100000002L});
    public static final BitSet FOLLOW_ruleResponse_in_rulePostRequest2820 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDeleteRequest_in_entryRuleDeleteRequest2858 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDeleteRequest2868 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleDeleteRequest2902 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDeleteRequest2924 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleDeleteRequest2954 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDeleteRequest2984 = new BitSet(new long[]{0x0000000100000002L});
    public static final BitSet FOLLOW_ruleResponse_in_ruleDeleteRequest3021 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePutRequest_in_entryRulePutRequest3059 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePutRequest3069 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_rulePutRequest3103 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePutRequest3125 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePutRequest3155 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePutRequest3185 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePutRequest3210 = new BitSet(new long[]{0x0000000100000002L});
    public static final BitSet FOLLOW_ruleResponse_in_rulePutRequest3247 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleResponse_in_entryRuleResponse3285 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleResponse3295 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleResponse3329 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleResponse3338 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleResponse3360 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMessage_in_entryRuleMessage3396 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMessage3406 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleParameterMessage_in_ruleMessage3453 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBodyMessage_in_ruleMessage3480 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleParameterMessage_in_entryRuleParameterMessage3514 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleParameterMessage3524 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleParameterMessage3558 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleParameterMessage3580 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleParameterMessage3597 = new BitSet(new long[]{0x000007E000010000L});
    public static final BitSet FOLLOW_ruleSimpleFeature_in_ruleParameterMessage3631 = new BitSet(new long[]{0x000007E000010000L});
    public static final BitSet FOLLOW_16_in_ruleParameterMessage3645 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleFeature_in_entryRuleSimpleFeature3678 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSimpleFeature3688 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDatatype_in_ruleSimpleFeature3747 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSimpleFeature3773 = new BitSet(new long[]{0x0000000000400002L});
    public static final BitSet FOLLOW_22_in_ruleSimpleFeature3791 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleSimpleFeature3813 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBodyMessage_in_entryRuleBodyMessage3856 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBodyMessage3866 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_ruleBodyMessage3900 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleBodyMessage3922 = new BitSet(new long[]{0x0000001000002000L});
    public static final BitSet FOLLOW_36_in_ruleBodyMessage3951 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleBodyMessage3974 = new BitSet(new long[]{0x000007E000010020L});
    public static final BitSet FOLLOW_ruleFeature_in_ruleBodyMessage4008 = new BitSet(new long[]{0x000007E000010020L});
    public static final BitSet FOLLOW_16_in_ruleBodyMessage4022 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleTypeKind4071 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleTypeKind4086 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_ruleTypeKind4101 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleTypeKind4116 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_41_in_ruleTypeKind4131 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleTypeKind4146 = new BitSet(new long[]{0x0000000000000002L});

}